The Internet utilizes many data forwarding devices (e.g., routers and switches) to forward data messages between network nodes. Among other things, such forwarding devices include both routing software and a corresponding routing hardware platform that cooperate to forward data messages to their appropriate destinations. Undesirably, routing software within current forwarding devices generally is preconfigured for use within one specific routing hardware platform only. In particular, a forwarding device (e.g., a router) manufactured by a given vendor has routing software that is specifically configured for use with no routing hardware platform other than that of the given vendor. Accordingly, such routing software from one vendor cannot be used on another vendor's forwarding device.
In addition, as is known in the art, many software processes (e.g., data routing protocols) utilize a plurality of threads to improve system performance. As is known in the art, when a thread stops operating (i.e., stops performing its underlying function properly, stops executing etc . . .), the memory allocated to it by the underlying operating system typically is not usable by other processes or threads until its parent process stops executing. This can create a memory shortage in a computer system, creating a variety of performance problems.